//
// Created by ChaoDONG on 2021-03-23.
//

/* loc_stat.c -- using a local static variable */
/* loc_stat.c -- 使用局部静态变量 */

#include <stdio.h>

void trystat(void);

int main(void)
{
    int count;
    for (count = 1; count <= 3; count++)
    {
        printf("Here comes iteration %d:\n", count);
        trystat();
    }
    return 0;
}

void trystat(void)
{
    int fade = 1;
    static int stay = 1;
    /* 静态变量和外部变量在程序被载入内存时已执行完毕。
     * 把这条声明放在trystat()函数中是为了告诉编译器只有trystat()函数才能看到该变量。
     * 这条声明并未在运行时执行*/
    printf("fade = %d and stay = %d\n", fade++, stay++);
}
/* 静态变量stay保存了它被递增1后的值，但是fade变量每次都是1。
 * 这表明了初始化的不同：每次调用trystat()都会初始化fade，
 * 但是stay只在编译strstat()时被初始化一次。
 * 如果未显式初始化静态变量，它们会被初始化为0。
 */